#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
将已抓取的JSON数据转换为Excel文件
"""

import os
import json
import pandas as pd
from datetime import datetime

def get_image_type(image_data):
    """
    判断图像数据类型
    """
    if not image_data:
        return '无头像'
    elif image_data.startswith('data:image/'):
        return '完整data URL'
    elif image_data.startswith('/9j/') or image_data.startswith('iVBOR'):
        return 'Base64图片'
    else:
        return '相对路径'

def convert_json_to_excel():
    """
    将JSON文件转换为Excel
    """
    data_folder = "combot_data"
    json_folder = os.path.join(data_folder, "json")
    
    if not os.path.exists(json_folder):
        print("JSON文件夹不存在")
        return
    
    all_processed_data = []
    
    # 获取所有JSON文件
    json_files = [f for f in os.listdir(json_folder) if f.endswith('.json')]
    json_files.sort()  # 按文件名排序
    
    print(f"找到 {len(json_files)} 个JSON文件")
    
    # 语言映射（从原始数据中获取）
    language_map = {
        'all': 'Global',
        'en': 'English', 
        'ru': 'Русский',
        'tr': 'Türkçe',
        'zh': '中文',
        'id': 'Indonesia',
        'vi': 'Tiếng Việt',
        'es': 'Español',
        'uz': 'Oʻzbek',
        'hi': 'हिंदी',
        'pt': 'Português',
        'ko': '한국어',
        'ar': 'العربية',
        'az': 'Azərbaycan',
        'fa': 'فارسی',
        'it': 'Italiano',
        'uk': 'Українська',
        'ms': 'Malay',
        'bn': 'বাংলা',
        'ta': 'தமிழ்',
        'fr': 'Français',
        'de': 'Deutsch',
        'ja': '日本語',
        'si': 'සිංහල',
        'am': 'አማርኛ',
        'my': 'မြန်မာစာ',
        'ig': 'Asụsụ Igbo',
        'pl': 'Polski',
        'fil': 'Wikang Filipino',
        'ml': 'മലയാളം',
        'tg': 'Тоҷикӣ',
        'so': 'Af-Soomaali',
        'he': 'עברית',
        'jv': 'ꦧꦱꦗꦮ',
        'nl': 'Nederlands',
        'ky': 'Кыргызча',
        'ro': 'Română',
        'ur': 'اُردُو',
        'th': 'ภาษาไทย',
        'kk': 'Казақша',
        'sw': 'Kiswahili',
        'mr': 'मराठी',
        'te': 'తెలుగు',
        'el': 'Νέα Ελληνικά',
        'sv': 'Svenska',
        'hu': 'Magyar nyelv',
        'km': 'ខេមរភាសា',
        'ne': 'नेपाली भाषा',
        'ha': 'هَرْشٜن هَوْس',
        'ca': 'Català',
        'kn': 'ಕನ್ನಡ',
        'lt': 'lt'
    }
    
    # 处理每个JSON文件
    for json_file in json_files:
        print(f"处理文件: {json_file}")
        
        # 解析文件名获取语言代码
        language_code = json_file.split('_')[0]
        language_name = language_map.get(language_code, language_code)
        
        json_path = os.path.join(json_folder, json_file)
        
        try:
            with open(json_path, 'r', encoding='utf-8') as f:
                data = json.load(f)
            
            # 处理每条数据
            for group in data:
                processed_group = {
                    '语言': language_name,
                    '语言代码': language_code,
                    '群组标题': group.get('t', ''),
                    '用户名': group.get('u', ''),
                    '成员数': group.get('s', 0),
                    '排名': group.get('p', 0),
                    '位置变化': group.get('pc', ''),
                    '语言标识': group.get('l', ''),
                    '年龄': group.get('a', ''),
                    '头像数据': '有头像' if group.get('i') else '无头像',
                    '头像类型': get_image_type(group.get('i', '')),
                    '抓取时间': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                    '来源文件': json_file
                }
                all_processed_data.append(processed_group)
                
        except Exception as e:
            print(f"处理文件 {json_file} 时出错: {e}")
    
    # 生成Excel文件
    if all_processed_data:
        print(f"\n总共处理了 {len(all_processed_data)} 条数据")
        
        df = pd.DataFrame(all_processed_data)
        
        # 按成员数排序
        df = df.sort_values('成员数', ascending=False)
        
        # 保存Excel文件
        excel_filename = os.path.join(data_folder, f"combot_all_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx")
        
        try:
            df.to_excel(excel_filename, index=False, engine='openpyxl')
            print(f"Excel文件已保存: {excel_filename}")
            print(f"总计 {len(df)} 个群组")
            
            # 统计各语言数量
            lang_stats = df['语言'].value_counts()
            print("\n各语言群组数量统计:")
            for lang, count in lang_stats.items():
                print(f"  {lang}: {count} 个群组")
                
            # 显示前10名群组
            print("\n成员数前10名群组:")
            top_10 = df.head(10)[['群组标题', '用户名', '成员数', '语言']]
            for idx, row in top_10.iterrows():
                print(f"  {row['群组标题']} (@{row['用户名']}) - {row['成员数']} 成员 [{row['语言']}]")
                
        except Exception as e:
            print(f"保存Excel失败: {e}")
    else:
        print("没有找到任何数据")

if __name__ == "__main__":
    convert_json_to_excel()
